// auth.js - 认证相关逻辑
class AuthService {
    constructor() {
        // 确保Utils已加载
        if (!window.Utils) {
            console.error('Utils 未加载');
            return;
        }
        this.currentUser = Utils.storage.get('currentUser');
    }

    // 登录
    async login(username, password) {
        try {
            const response = await apiService.fetch('/api/auth/login', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify({ username, password })
            });

            if (response.success) {
                this.currentUser = response.data;
                Utils.storage.set('currentUser', this.currentUser);
                Utils.showNotification('登录成功', 'success');
                
                // 根据用户角色跳转到相应的首页
                if (this.currentUser.role === 'user') {
                    window.location.href = '/pages/user/dashboard.html';
                } else if (this.currentUser.role === 'courier') {
                    window.location.href = '/pages/courier/dashboard.html';
                } else if (this.currentUser.role === 'admin') {
                    window.location.href = '/pages/admin/dashboard.html';
                }
                
                return true;
            } else {
                Utils.showNotification(response.message || '登录失败', 'error');
                return false;
            }
        } catch (error) {
            console.error('登录失败:', error);
            Utils.showNotification('登录失败，请稍后再试', 'error');
            return false;
        }
    }

    // 注册
    async register(username, password, role = 'user') {
        try {
            const response = await apiService.fetch('/api/auth/register', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify({ username, password, role })
            });

            if (response.success) {
                Utils.showNotification('注册成功，请登录', 'success');
                window.location.href = '/pages/auth/login.html';
                return true;
            } else {
                Utils.showNotification(response.message || '注册失败', 'error');
                return false;
            }
        } catch (error) {
            console.error('注册失败:', error);
            Utils.showNotification('注册失败，请稍后再试', 'error');
            return false;
        }
    }

    // 退出登录
    logout() {
        this.currentUser = null;
        Utils.storage.remove('currentUser');
        Utils.showNotification('已退出登录', 'info');
        window.location.href = '/index.html';
    }

    // 检查是否已登录
    isAuthenticated() {
        return !!this.currentUser;
    }

    // 获取当前用户
    getUser() {
        return this.currentUser;
    }

    // 获取用户角色
    getUserRole() {
        return this.currentUser ? this.currentUser.role : null;
    }
}

// 等待Utils加载完成后初始化
function initAuthService() {
    if (window.Utils) {
        // 创建单例实例
        const authService = new AuthService();
        // 将authService挂载到window对象上
        window.authService = authService;
    } else {
        // 依赖未加载，稍后重试
        setTimeout(initAuthService, 100);
    }
}

// 启动初始化
initAuthService();